package com.tongcheng.mapper;

import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * ClassName: GoodsMapper
 * Description: TODO
 * Author: lcl
 * Date: 2020/11/26 15:30
 * Version: 1.0
 */
public interface GoodsMapper {
    /**
     * 根据商家id或商品id或商品名称或商品状态查询对应的商品信息
     * @param merchant_id
     * @return
     */
    List<Map> queryGoods(@Param("merchant_id") Integer merchant_id, @Param("goods_id") Integer goods_id, @Param("goods_name") String goods_name, @Param("goods_shelves_id") Integer goods_shelves_id);

    /**
     * 商品状态信息查询
     * @return
     */
    List<Map> queryGoodsShelves();

    /**
     * 根据商品id查询对应的商品详细信息
     * @param goods_id
     * @return
     */
    Map queryGoodById(@Param("goods_id") Integer goods_id);

    /**
     * 商品图片类型查询
     * @return
     */
    List<Map> queryGoodImgType();

    /**
     * 商品添加
     * @param map
     * @return
     */
    int addGoods(Map map);

    /**
     * 根据商品id编辑对应的商品信息
     * @param goods_id
     * @return
     */
    int editGoods(Integer goods_id);

    /**
     * 根据商品id查询对应的商家信息
     * @param goods_id
     * @return
     */
    Map queryGoodMerchant(@Param("goods_id") Integer goods_id);

    /**
     * 商品详情页图片地址查询
     * @param goods_id
     * @return
     */
    List<Map> queryGoodImgUrl(@Param("goods_id")Integer goods_id);

    /**
     * 根据商品id查询商品的规格信息
     * @param goods_id
     * @return
     */
    Map queryGoodSpec(@Param("goods_id") Integer goods_id);

    /**
     * 根据商品id查询对应商品浏览信息
     * @param goods_id
     * @return
     */
    Map queryBrowse(@Param("goods_id") Integer goods_id);

    /**
     * 获得指定商品的商城排名
     * @param goods_id
     * @return
     */
    Map queryGoodRank(@Param("goods_id") Integer goods_id);

    /**
     * 根据商品id获取当前商品的销售总量
     * @param goods_id
     * @return
     */
    Integer queryGoodOrder(@Param("goods_id") Integer goods_id);

    /**
     * 根据规格id查询当前商品的日销售量
     * @param goods_id
     * @return
     */
    Integer queryTodaySum(@Param("goods_id") Integer goods_id);

    /**
     * 根据商品id查询当前商品的周销量
     * @param goods_id
     * @return
     */
    Integer queryWeekSum(@Param("goods_id") Integer goods_id);

    /**
     * 根据商品id查询当前商品的月销量
     * @param goods_id
     * @return
     */
    Integer queryMonthSum(@Param("goods_id") Integer goods_id);

    /**
     * 查询商品的销量排行
     * @param goods_id
     * @return
     */
    Integer querySellRank(@Param("goods_id") Integer goods_id);

    /**
     * 查询商品的退货数量
     * @param goods_id
     * @return
     */
    Integer queryReturn(@Param("goods_id") Integer goods_id);

    /**
     * 根据商品id获得该商品的总流水
     * @param goods_id
     * @return
     */
    BigDecimal queryWaterTotal(@Param("goods_id") Integer goods_id);

    /**
     * 根据商品id获得该商品的今日流水
     * @param goods_id
     * @return
     */
    BigDecimal queryWaterToday(@Param("goods_id") Integer goods_id);

    /**
     * 根据商品id获得该商品的本周流水
     * @param goods_id
     * @return
     */
    BigDecimal queryWaterWeek(@Param("goods_id") Integer goods_id);

    /**
     * 根据商品id获得该商品的本月流水
     * @param goods_id
     * @return
     */
    BigDecimal queryWaterMonth(@Param("goods_id") Integer goods_id);

    /**
     * 根据商品id获得该商品流水排行
     * @param goods_id
     * @return
     */
    Integer queryWaterRank(@Param("goods_id") Integer goods_id);

    /**
     * 查询热销商品
     * @return
     */
    List<Map> querySellLikeGoods();

    /**
     * 查询所有参加团购商品
     * @return
     */
    List<Map> queryGroupBookGoods(@Param("merchanr_goods_name") String merchanr_goods_name);

    /**
     * 查询所有商品列表接口(可根据商品名称或店铺名称实现模糊查询)
     * @param merchanr_goods_name
     * @return
     */
    List<Map> queryGoodsApp(@Param("merchanr_goods_name") String merchanr_goods_name);


    /**
     * 根据商品id查询对应的商品详细信息(app端)
     * @param goods_id
     * @return
     */
    Map queryGoodByIdApp(@Param("goods_id") Integer goods_id,@Param("goods_sell_sum") Integer goods_sell_sum);

    /**
     * 根据商品id查询出该商品下的所有销售量
     * @param goods_id
     * @return
     */
    Integer queryInById(@Param("goods_id") Integer goods_id);

    /**
     * 根据商品id查询该商品的规格信息（app返回参数）
     * @param goods_id
     * @return
     */
    List<Map> queryGoodSpecById(@Param("goods_id") Integer goods_id);

    /**
     * 根据商品id查询出商品的浏览信息
     * @param goods_id
     * @return
     */
    Map queryGoodBrowse(@Param("goods_id") Integer goods_id);

    /**
     * 浏览量刷新
     * @param map2
     * @return
     */
    int updateGoodBrowse(Map<String, Object> map2);

    /**
     * 维护商品与商家的中间表
     * @param map
     * @return
     */
    int addGoodMerchant(Map map);

    /**
     * 添加商品详情图片地址
     * @param goods_id
     * @param goods_img_url
     * @return
     */
    int addImgUrl(@Param("goods_id") Integer goods_id,@Param("goods_img_url") String goods_img_url);

    /**
     * 为新增商品建立浏览信息表，方便之后维护商品的浏览信息
     * @param goods_id
     * @return
     */
    int addGoodsBrowse(Integer goods_id);

    /**
     *  根据商品id下架对应的商品
     * @param goods_id
     * @return
     */
    int deleGoods(@Param("goods_id") Integer goods_id);

    /**
     * 添加商品规格信息
     * @param map
     * @return
     */
    int addGoodSpec(Map map);
}
